package cn.com.shopec.erp.system.common;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Component;
import cn.com.shopec.erp.common.constant.SZSCMConstant;
import cn.com.shopec.erp.common.page.PageFinder;
import cn.com.shopec.erp.common.utils.DateUtil;
import cn.com.shopec.erp.common.utils.LogicUtil;
import cn.com.shopec.erp.system.entity.Parameter;
import cn.com.shopec.erp.system.vo.ParameterVo;

/**
 * 
 * @ClassName: DefectiveConvertor
 * @Description: 配置参数对象转换器
 * @author: LiangShunWang
 * @date 2016-11-21 下午17:16:22
 * 
 */
@Component
public class ParameterVoConvertor {
	
	public ParameterVo convert2BrandVo(Parameter param) {
        ParameterVo parameterVo = null;
        if (LogicUtil.isNotNull(param)) {
        	parameterVo = new ParameterVo();

        	parameterVo.setId(param.getId());
        	parameterVo.setParamKey(param.getParamKey());
        	parameterVo.setParamValue(param.getParamValue());
        	parameterVo.setParamName(param.getParamName());
        	parameterVo.setParamUser(param.getParamUser());
        	parameterVo.setCreateTime(param.getCreateTime());
        	parameterVo.setIsAvailable(param.getIsAvailable());
        	parameterVo.setIsMultipleValues(param.getIsMultipleValues());
        	parameterVo.setDeleteFlag(param.getDeleteFlag());
        	parameterVo.setUpdateTime(param.getUpdateTime());
        	parameterVo.setUpdater(param.getUpdater());
        	parameterVo.setMemo(param.getMemo());
        }

        return parameterVo;
    }

    public List<ParameterVo> convert2BrandVos(List<Parameter> brandList) {
        List<ParameterVo> parameterVos = null;

        if (LogicUtil.isNotNullAndEmpty(brandList)) {
        	parameterVos = new ArrayList<ParameterVo>();

            for (Parameter parameter : brandList) {
            	ParameterVo brandVo = this.convert2BrandVo(parameter);
            	parameterVos.add(brandVo);
            }
        }

        return parameterVos;
    }

    public Parameter convert2Brand(ParameterVo parameterVo) {
    	Parameter parameter = null;

        if (LogicUtil.isNotNull(parameterVo)) {
        	parameter = new Parameter();
        	parameter.setId(parameterVo.getId());
        	parameter.setParamKey(parameterVo.getParamKey());
        	parameter.setParamValue(parameterVo.getParamValue());
        	parameter.setParamName(parameterVo.getParamName());
        	parameter.setParamUser(parameterVo.getParamUser());
        	parameter.setCreateTime(parameterVo.getCreateTime());
        	parameter.setIsAvailable(parameterVo.getIsAvailable());
        	parameter.setIsMultipleValues(parameterVo.getIsMultipleValues());
        	parameter.setUpdateTime(parameterVo.getUpdateTime());
        	parameter.setUpdater(parameterVo.getUpdater());
        	parameter.setMemo(parameterVo.getMemo());
            if (parameterVo.getDeleteFlag() == null) {
            	parameter.setDeleteFlag(SZSCMConstant.DELETE_FLAG_NO);
            } else {
            	parameter.setDeleteFlag(parameterVo.getDeleteFlag());
            }
        }
        return parameter;
    }

    public Parameter convert2Brand(ParameterVo parameterVo, Parameter parameter) {

        if (LogicUtil.isNotNull(parameterVo) && LogicUtil.isNotNull(parameter)) {
        	parameter.setId(parameterVo.getId());
        	parameter.setParamKey(parameterVo.getParamKey());
        	parameter.setParamValue(parameterVo.getParamValue());
        	parameter.setParamName(parameterVo.getParamName());
        	parameter.setIsAvailable(parameterVo.getIsAvailable());
        	parameter.setIsMultipleValues(parameterVo.getIsMultipleValues());
            parameter.setUpdateTime(DateUtil.formatTimesTampDate(new Date()));
            parameter.setUpdater(UserUtils.getLoginUserName());
            parameter.setMemo(parameterVo.getMemo());
        	
            return parameter;
        } else {
            return null;
        }
    }

    public PageFinder<ParameterVo> convert2PagedBrandVos(PageFinder<Parameter> pagedBrands) {
        PageFinder<ParameterVo> pagedBrandVos = null;

        if (LogicUtil.isNotNull(pagedBrands.getData())) {
            List<ParameterVo> brandVos = this.convert2BrandVos(pagedBrands.getData());

            pagedBrandVos = new PageFinder<ParameterVo>(pagedBrands.getPageNo(), pagedBrands.getPageSize(),
                    pagedBrands.getRowCount(), brandVos);
        }

        return pagedBrandVos;
    }
}